home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / lib / LinkOb.c < prev    next >
C/C++ Source or Header  |  1990-05-19  |  2KB  |  114 lines

  1. /* LinkOb.c -- implementation of singly-linked list Object pointer element
  2.  
  3.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  4.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  5.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  6.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  7.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  8.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  9.  
  10. Author:
  11.     K. E. Gorlen
  12.     Bg. 12A, Rm. 2033
  13.     Computer Systems Laboratory
  14.     Division of Computer Research and Technology
  15.     National Institutes of Health
  16.     Bethesda, Maryland 20892
  17.     Phone: (301) 496-1111
  18.     uucp: uunet!nih-csl!kgorlen
  19.     Internet: kgorlen@alw.nih.gov
  20.     October, 1985
  21.  
  22. Function:
  23.  
  24. Objects of class LinkOb are used to link Objects into a LinkedList.
  25.  
  26. $Log:    LinkOb.c,v $
  27.  * Revision 3.0  90/05/20  00:20:03  kgorlen
  28.  * Release for 1st edition.
  29.  * 
  30. */
  31.  
  32. #include "LinkOb.h"
  33. #include "nihclIO.h"
  34.  
  35. #define    THIS    LinkOb
  36. #define    BASE    Link
  37. #define BASE_CLASSES BASE::desc()
  38. #define MEMBER_CLASSES
  39. #define VIRTUAL_BASE_CLASSES
  40.  
  41. DEFINE_CLASS(LinkOb,1,"$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/lib/RCS/LinkOb.c,v 3.0 90/05/20 00:20:03 kgorlen Rel $",NULL,NULL);
  42.  
  43. LinkOb::LinkOb(Object& newval)
  44. {
  45.     val = &newval;
  46. }
  47.  
  48. unsigned LinkOb::capacity() const        { return val->capacity(); }
  49.  
  50. int LinkOb::compare(const Object& ob) const    { return ob.compare(*val); }
  51.  
  52. void LinkOb::deepenShallowCopy()
  53. {
  54.     BASE::deepenShallowCopy();
  55.     val = val->deepCopy();
  56. }
  57.  
  58. unsigned LinkOb::hash() const            { return val->hash(); }
  59.  
  60. bool LinkOb::isEqual(const Object& ob) const    { return ob.isEqual(*val); }
  61.  
  62. void LinkOb::dumpOn(ostream& strm) const
  63. {
  64.     val->dumpOn(strm);
  65. }
  66.  
  67. void LinkOb::printOn(ostream& strm) const
  68. {
  69.     val->printOn(strm);
  70. }
  71.  
  72. unsigned LinkOb::size() const            { return val->size(); }
  73.  
  74. Object* LinkOb::value() const    { return val; }
  75.  
  76. Object* LinkOb::value(Object& newval)
  77. {
  78.     Object* temp = val;
  79.     val = &newval;
  80.     return temp;
  81. }
  82.  
  83. LinkOb::LinkOb(OIOin& strm)
  84. :
  85. #ifdef MI
  86.     Object(strm),
  87. #endif
  88.     BASE(strm)
  89. {
  90.     val = Object::readFrom(strm);
  91. }
  92.  
  93. void LinkOb::storer(OIOout& strm) const
  94. {
  95.     BASE::storer(strm);
  96.     val->storeOn(strm);
  97. }
  98.  
  99. LinkOb::LinkOb(OIOifd& fd)
  100. :
  101. #ifdef MI
  102.     Object(fd),
  103. #endif
  104.     BASE(fd)
  105. {
  106.     val = Object::readFrom(fd);
  107. }
  108.  
  109. void LinkOb::storer(OIOofd& fd) const
  110. {
  111.     BASE::storer(fd);
  112.     val->storeOn(fd);
  113. }
  114.